<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //class继承

        //class F '父'
        // class F {
        //     money = '100w'
        //     fn (){}
        // }
        // //class S '子'
        // class S extends F {}  //class S (子类名)+ extends + F（父类名）

        // //输出结果为S {money: '100w'}，实例上直接继承父类属性，当前属性不在原型上，而是在对象本身上
        // console.log( new S())

        //调用子类中constructor
        // class F {
        //     money = '100w'
        //     fn() { }
        // }
        // class S extends F { 
        //     constructor () {
        //         super()
        //     }
        //  }
        //  console.log(new S())

        //子类调用super
        // class F {
        //     constructor(sMoney) {
        //         this.money = 100 + sMoney
        //     }
        //     fn() {}
        // }
        // class S extends F{
        //     constructor(money){
        // /* 子类的this必须要等待父类的constructor执行完毕通过父类创建，
        // 所以写在super之后 */
        //         super(money)
        //     }
        // }
        // console.log(new S(10))

        

        // 继承中的位置
        class F {
            money = '100w'
            fn (){}
        }
        class S extends F {
            constructor(){
                super()
                this.name = 'son'
            }
            fn1 () {}
        }  
        var s = new S()

        /* S.prototype为构造函数的原型
        通过__proto__访问原型对象的原型
        
        */
        console.log(S.prototype.__proto__ === F.prototype)
        //输出结果为true说明子类的原型的原型就是父类的原型，所以才能获取父类的属性和方法

        
    </script>
</body>

</html>